"""
简单继承  AutoService 实现session复用

"""

import os
import sys

# 切换目录到上级目录，引入AutoService【正式情况下请把脚本放在上级目录，就可以不用这两句啦】
if not os.path.exists("core/autoService.py"):
    sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from core.autoService import AutoService,reLoadSession


class FirstAutoService(AutoService):
    # session 复用就不设置__autoLoadEnv__
    # __autoLoadEnv__ = False
    storage_session = ""

    # 如果不取消，将会把以storage_开头的变量保存到data下。
    def init(self, **kwargs):
        # 这里return 父类的init方法返回值，可以实现链调用。
        return super(FirstAutoService, self).init(**kwargs)

    # session是否能用的一个检查器，实际使用需要代入API判断使用,返回True表示能用，返回False表示不能用
    def checkSession(self):
        self.log("session检查中啦")
        """
        这里写调用API之类的一个流程，然后对数据判断，有效返回True，无效返回False
        """
        return True

    def sendSms(self):
        super(FirstAutoService, self).sendSms()
        """
            调用API发送 验证码流程，这里省略
        """
        self.log("已经发送了验证码")

    def login(self):
        code = FirstAutoService.getVerCode()
        """
            请用电脑QQ模拟一条验证码发送给手机QQ，让手机有个弹窗消息，否则将会一直卡在上一步，直至60s的超时
        """
        self.log(f"手机号为:{self.getNum()}验证码:{code}")
        """
            这里就继续写登录流程啦
        """
        self.log("登录成功")
        self.storage_session = "11111111111"  # 这里是实际登录的session哈，我这里只是简单的赋值

    def getUserInfo(self):
        self.log(f"这里是登录成功后，用户登录的信息啦,用户的sessionID{self.storage_session}")

    # 定义一个完整的登录流程，一定要有这个习惯。
    # 一定要加()
    @reLoadSession()
    def flow_login(self):
        self.sendSms()
        self.login()
    def flow_getUserInfo(self):
        # 检查session是否能用之类的，
        self.flow_login()

        # 这里是获取用户信息
        self.getUserInfo()


if __name__ == '__main__':
    # 调用init方法，传入必须要的phoneNum，调用获取用户信息的流程
    FirstAutoService().init(phoneNum="123456").flow_getUserInfo()
